// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package com.google.zxing.qrcode.detector; import com.google.zxing.NotFoundException; import com.google.zxing.ResultPointCallback; import com.google.zxing.common.BitMatrix; import java.util.ArrayList; import java.util.Iterator; import java.util.List; // Referenced classes of package com.google.zxing.qrcode.detector: // AlignmentPattern final class a { private final BitMatrix a; private final List b = new ArrayList(5); private final int c; private final int d; private final int e; private final int f; private final float g; private final int h[] = new int[3]; private final ResultPointCallback i; a(BitMatrix bitmatrix, int j, int k, int l, int i1, float f1, ResultPointCallback resultpointcallback) { a = bitmatrix; c = j; d = k; e = l; f = i1; g = f1; i = resultpointcallback; } private float a(int j, int k, int l, int i1) { BitMatrix bitmatrix = a; int j1 = bitmatrix.getHeight(); int ai[] = h; ai[0] = 0; ai[1] = 0; ai[2] = 0; int k1; for (k1 = j; k1 >= 0 && bitmatrix.get(k, k1) && ai[1] <= l; k1--) { ai[1] = 1 + ai[1]; } if (k1 >= 0 && ai[1] <= l) { for (; k1 >= 0 && !bitmatrix.get(k, k1) && ai[0] <= l; k1--) { ai[0] = 1 + ai[0]; } if (ai[0] <= l) { int l1; for (l1 = j + 1; l1 < j1 && bitmatrix.get(k, l1) && ai[1] <= l; l1++) { ai[1] = 1 + ai[1]; } if (l1 != j1 && ai[1] <= l) { for (; l1 < j1 && !bitmatrix.get(k, l1) && ai[2] <= l; l1++) { ai[2] = 1 + ai[2]; } if (ai[2] <= l && 5 * Math.abs((ai[0] + ai[1] + ai[2]) - i1) < i1 * 2 && a(ai)) { return a(ai, l1); } } } } return (0.0F / 0.0F); } private static float a(int ai[], int j) { return (float)(j - ai[2]) - (float)ai[1] / 2.0F; } private AlignmentPattern a(int ai[], int j, int k) { int l = ai[0] + ai[1] + ai[2]; float f1 = a(ai, k); float f2 = a(j, (int)f1, 2 * ai[1], l); if (!Float.isNaN(f2)) { float f3 = (float)(ai[0] + ai[1] + ai[2]) / 3F; for (Iterator iterator = b.iterator(); iterator.hasNext();) { AlignmentPattern alignmentpattern1 = (AlignmentPattern)iterator.next(); if (alignmentpattern1.a(f3, f2, f1)) { return alignmentpattern1.b(f2, f1, f3); } } AlignmentPattern alignmentpattern = new AlignmentPattern(f1, f2, f3); b.add(alignmentpattern); if (i != null) { i.foundPossibleResultPoint(alignmentpattern); } } return null; } private boolean a(int ai[]) { float f1 = g; float f2 = f1 / 2.0F; for (int j = 0; j < 3; j++) { if (Math.abs(f1 - (float)ai[j]) >= f2) { return false; } } return true; } AlignmentPattern a() { int j; int k; int l; int i1; int ai[]; int j1; j = c; k = f; l = j + e; i1 = d + (k >> 1); ai = new int[3]; j1 = 0; _L17: if (j1 >= k) goto _L2; else goto _L1 _L1: int l1; int j2; int k2; int k1; int i2; if ((j1 & 1) == 0) { k1 = j1 + 1 >> 1; } else { k1 = -(j1 + 1 >> 1); } l1 = i1 + k1; ai[0] = 0; ai[1] = 0; ai[2] = 0; for (i2 = j; i2 < l && !a.get(i2, l1); i2++) { } j2 = i2; k2 = 0; _L9: if (j2 >= l) goto _L4; else goto _L3 _L3: if (!a.get(j2, l1)) goto _L6; else goto _L5 _L5: if (k2 != 1) goto _L8; else goto _L7 _L7: ai[k2] = 1 + ai[k2]; _L15: j2++; goto _L9 _L8: if (k2 != 2) goto _L11; else goto _L10 _L10: if (!a(ai)) goto _L13; else goto _L12 _L12: AlignmentPattern alignmentpattern = a(ai, l1, j2); if (alignmentpattern == null) goto _L13; else goto _L14 _L14: return alignmentpattern; _L13: ai[0] = ai[2]; ai[1] = 1; ai[2] = 0; k2 = 1; goto _L15 _L11: k2++; ai[k2] = 1 + ai[k2]; goto _L15 _L6: if (k2 == 1) { k2++; } ai[k2] = 1 + ai[k2]; goto _L15 _L4: if (!a(ai)) { continue; /* Loop/switch isn't completed */ } alignmentpattern = a(ai, l1, l); if (alignmentpattern != null) goto _L14; else goto _L16 _L16: j1++; goto _L17 _L2: if (!b.isEmpty()) { return (AlignmentPattern)b.get(0); } else { throw NotFoundException.getNotFoundInstance(); } } }